import requests


def get_insight_request(agent_type: str):
    '''
    请求获取与本Agent相关的用户输入
    :param agent_type: Agent类型 - agent_graph, agent_map, agent_time_series, agent_statistics
    :return: 字典形式的响应内容
    {
        "code": "200",
        "msg": "操作成功！",
        "insight_request": {'keywords': ['业务关键词'], 'user_latest_request': '用户最近输入的请求', 'user_request_summary': '用户输入的总结'}
    }
    '''
    # 定义目标URL
    url = "http://127.0.0.1:3000/agents/insight_request"
    # 定义要发送的数据
    post_data = {
        "sub_agent_type": agent_type,
        "stream": False
    }
    # 发送POST请求
    try:
        response = requests.post(url, json=post_data)
        # 检查响应状态码
        if response.status_code == 200:
            print(f"💡子智能体 {agent_type} 向 /agents/insight_request 发送 {post_data} 成功，获得 {response.json()}")
            return response.json()
        else:
            print(f"❌子智能体 {agent_type} 请求 /agents/insight_request 失败, 状态码: {response.status_code}，响应内容: {response.text}")
            return dict()
    except requests.exceptions.ConnectionError as e:
        print(f"连接错误: {e}")


def inform_insight_thinking(agent_type: str, thinking_step: str):
    '''
    向主智能体发送思考中间过程
    :param agent_type: Agent类型 - agent_graph, agent_map, agent_time_series, agent_statistics
    :param thinking_step: 思考过程文字描述
    :return: 字典形式的响应内容，如果成功可忽略，注意不要作为 MCP Server 的输出以防污染上下文
    '''
    # 定义目标URL
    url = "http://127.0.0.1:3000/agents/insight_thinking_steps"
    # 定义要发送的数据
    post_data = {
        "sub_agent_type": agent_type,
        "stream": False,
        "thinking_step": thinking_step
    }
    # 发送POST请求
    try:
        response = requests.post(url, json=post_data)
        # 检查响应状态码
        if response.status_code == 200:
            print(f"💡子智能体 {agent_type} 向 /agents/insight_thinking_steps 发送 {post_data} 成功，响应内容 {response.json()}")
            return response.json()
        else:
            print(
                f"❌子智能体 {agent_type} 请求 /agents/insight_thinking_steps 失败, 状态码: {response.status_code}，响应内容: {response.text}")
            return dict()
    except requests.exceptions.ConnectionError as e:
        print(f"连接错误: {e}")


def update_insight_result(agent_type: str, updated_result: dict):
    '''
    向主控智能体更新与本Agent相关的洞察结果
    :param agent_type: Agent类型 - agent_graph, agent_map, agent_time_series, agent_statistics
    :param updated_result: {"summary": "本次洞察结果的总结", "data": {本次洞察结果的数据}}
    :return: 字典形式的响应内容，如果成功可忽略，注意不要作为 MCP Server 的输出以防污染上下文
    {
        "code": "200",
        "msg": "操作成功！",
        "insight_result": {
            "summary": "最新主控的洞察结果(确认推送成功用，同updated_result.summary)",
            "data": "最新主控的洞察数据(确认推送成功用，同updated_result.data)",
        }
    }
    '''
    # 定义目标URL
    url = "http://127.0.0.1:3000/agents/insight_result"
    # 定义要发送的数据
    post_data = {
        "sub_agent_type": agent_type,
        "stream": False,
        "updated_result": updated_result
    }
    # 发送POST请求
    try:
        response = requests.post(url, json=post_data)
        # 检查响应状态码
        if response.status_code == 200:
            print(f"💡子智能体 {agent_type} 向 /agents/insight_result 发送 {post_data} 成功，响应内容 {response.json()}")
            return response.json()
        else:
            print(f"❌子智能体 {agent_type} 请求 /agents/insight_result 失败, 状态码: {response.status_code}，响应内容: {response.text}")
            return dict()
    except requests.exceptions.ConnectionError as e:
        print(f"连接错误: {e}")